home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / wink24 / src / int24.asm < prev    next >
Assembly Source File  |  1993-07-08  |  1KB  |  91 lines

  1. ;========================================================================
  2. ;
  3. ;    ARIのキャンセルルーチン
  4. ;
  5.     .386p
  6.  
  7. code    segment    use32
  8.     assume    cs:code,ds:code
  9.  
  10.  
  11. ;    INT 24hベクタの設定
  12.  
  13.     public    set24h
  14. set24h    proc    near
  15.  
  16.     pushad
  17.     
  18.     push    es
  19.     mov    cl,24h            ;旧ネイティブ割り込みベクタの取得
  20.     mov    ax,2502h
  21.     int    21h
  22.     mov    dword ptr [padr],ebx
  23.     mov    word ptr [pseg],es
  24.     pop    es
  25.     jc    #Error
  26.  
  27.     mov    cl,24h            ;旧リアル割り込みベクタの取得
  28.     mov    ax,2503h
  29.     int    21h
  30.     jc    #Error
  31.     mov    dword ptr [radr],ebx
  32.  
  33.     push    ds            ;int24hベクタを登録
  34.     mov    cl,24h
  35.     push    cs
  36.     pop    ds
  37.     mov    edx,offset int24h
  38.     mov    ax,2506h
  39.     int    21h
  40.     pop    ds
  41.     jc    #Error
  42.  
  43.     popad
  44.     xor    eax,eax
  45.     ret
  46. #Error:
  47.     popad
  48.     mov    eax,-1
  49.     ret
  50.         
  51. set24h    endp
  52.  
  53.  
  54. ;    INT 24hベクタを戻す
  55.  
  56.     public    reset24h
  57. reset24h    proc    near
  58.  
  59.     pushad
  60.     
  61.     push    ds
  62.     mov    ebx,dword ptr [radr]
  63.     mov    edx,dword ptr [padr]
  64.     mov    ds,word ptr [pseg]
  65.  
  66.     mov    cl,24h            ;ネイティブ割り込みベクタの設定
  67.     mov    ax,2507h
  68.     int    21h
  69.  
  70.     pop    ds
  71.     
  72.     popad
  73.     xor    eax,eax
  74.     ret
  75.         
  76. reset24h    endp
  77.  
  78.  
  79. int24h    proc    far
  80.     mov    eax,0
  81.     ret
  82. int24h    endp
  83.  
  84.     align    4
  85. pseg    dd    0
  86. padr    dd    0
  87. radr    dd    0
  88.  
  89. code    ends
  90.     end
  91.